Loading...
 

Transport ciepła za pomocą tradycyjnej metody elementów skończonych

W module tym podam przykład zastosowania tradycyjnej metody elementów skończonych pracującej na siatkach nieregularnych do rozwiązania problemu transportu ciepła w obszarze w kształcie litery L, opisanym w module Transport ciepła za pomocą izogeometrycznej metody elementów skończonych. Główna różnica polega na zastosowaniu elementów trójkątnych oraz wielomianów Lagrange'a rozpiętych na elementach trójkątnych. Z punktu widzenia faktoryzacji układów równań, tradycyjna metoda elementów skończonych generuje układ równań, który posiada więcej niewiadomych niż metoda izogeometryczna. Ponadto na granicy elementów skończonych wielomiany Lagrange'a stosowane w tradycyjnej metodzie elementów skończonych są jedynie klasy \( C^0 \), co oznacza, że jak policzymy pochodne z rozwiązania to na krawędziach elementów pochodne te będą nieciągłe.

Metoda izogeometryczna daje bardziej "smukłe" i gładkie rozwiązania, dla których układy równań mają mniej niewiadomych, i generalnie koszt faktoryzacji jest niższy, szczególnie w przypadku gdy stosujemy tak zwaną poprawioną analizę izogeometryczną ("refined isogeometric analysis") i rozpinamy wielomiany B-spline na grupach elementów (po angielsku taka grupa elementów nazywa się "isogeometric patch"), natomiast na granicy grup elementów umieszczamy \( C^0 \) separatory.


Sformułowania silne oraz słabe dla naszego problemu transportu ciepła na obszarze w kształcie litery L rozwiązywanego klasyczną metodą elementów skończonych jest takie same jak w przypadku stosowania metody izogeometrycznej.
\( a(u,v)=l(v) \\ a(u,v) = \int_{\Omega} \left(\frac{\partial u }{\partial x }\frac{\partial v }{\partial x } + \frac{\partial u }{\partial y } \frac{ \partial v}{\partial y } \right)v(x,y) dxdy \\ l(v) = \int_{ \partial \Omega_N } g(x,y) v(x,y) dS +\int_{\Omega } f(x,y) v(x,y) dxdy \)

W naszym przykładowym problemie przepływu ciepła na obszarze w kształcie litery L przyjmujemy \( f(x,y)=0 \) (czyli brak źródeł ciepła).
Na "zewnętrznym" fragmencie brzegu, który nazywamy brzegiem Neumanna \( \Gamma_N = \{(x,y):x=-1 \cup x=1 \cup y=1 \cup y=-1 \} \)
zakładamy znaną prędkość zmiany temperatury.
\( \frac{\partial u(x,y)}{\partial n }=g(x,y) \textrm{ dla } (x,y) in \Gamma_N \)

W celu zdefiniowania warunku brzegowego Neumanna, wprowadzamy biegunowy układ współrzędnych ze środkiem w punkcie (0,0) i z osią odciętą leżącą na osi OX kartezjańskiego układu współrzędnych.

W naszym przykładzie przepływu ciepła na obszarze w kształcie litery L, przyjmujemy przykładową funkcję prędkości przepływu ciepła zdefiniowaną w biegunowym układzie współrzędnych,
\( R \times (0,2\pi) \ni (r,\theta)\rightarrow g(r,\theta)=r^{2/3 }sin^{2/3 }(\theta+\pi/2) \)
gdzie \( r=(x^2+y^2)^{0.5 } \) oznacza odległość od początku układu współrzędnych, natomiast \( \theta = atan2(y,x) \) jest kątem pomiędzy punktem \( (x,y) \) a osią \( x \). Tak więc
\( g(r,\theta)=r^{2/3 }sin^{2/3 }(\theta+\pi/2)=(x^2+y^2)^{1/3 }sin^{2/3 }(atan2(y,x)+\pi/2)=g(x,y) \).

Na "wewnętrznym" fragmencie brzegu, który nazywamy brzegiem Dirichleta \( \Gamma_D = \partial \Omega \ \Gamma_N \) przyjmujemy zerową wartość temperatury
\( u(x,y)=0 \textrm{ dla } (x,y) in \Gamma_D \)

Przykładowa siatka zbudowana z elementów trójkątnych oraz rozpięte na niej wielomiany Lagrange pierwszego stopnia przedstawiona jest na rysunkach Rys. 1-Rys. 2.

Funkcji bazowe e2 i e5 zagregowane na elementach trójkątnych.
Rysunek 1: Funkcji bazowe e2 i e5 zagregowane na elementach trójkątnych.
Funkcje bazowe e1, e3, e4 zagregowane na elementach trójkątnych.
Rysunek 2: Funkcje bazowe e1, e3, e4 zagregowane na elementach trójkątnych.


Załóżmy, że stosujemy do aproksymacji rozwiązania wielomiany Lagrange'a pierwszego stopnia. W przypadku stosowania liniowych funkcji bazowych są one związane z wierzchołkami elementów trójkątnych (w sensie, że ich maksima znajdują się nad wierzchołkami, a określone są na sąsiadujących elementach trójkątych).
Gdyby zastosować natomiast wielomiany Lagrange'a wyższego stopnia, byłyby one również związane z krawędziami i wnętrzami elementów. Szczegóły podano w rozdziale opisującym sposoby definiowania funkcji bazowych.

W klasycznej metodzie elementów skończonych nasza siatka oraz wynikająca z niej macierz układu równań liniowych nie posiadają regularnego kształtu, tak jak ma to miejsce w przypadku grupy elementów w izogeometrycznej metodzie elementów skończonych. Należy więc wygenerować globalną numerację funkcji bazowych, związanych z wierzchołkami elementów trójkątnych. Każdy element trójkątny posiada z kolei swoją lokalną numeracje wierzchołków. Konieczne jest opracowanie mapy z numeracji globalnej na numerację lokalną każdego elementu trójkątnego. Jest ona narysowana na Rys. 3.

Mapa pomiędzy numeracją globalną funkcji związanych z wierzchołkami trójkątów a numeracją lokalną w poszczególnych trójkątach.
Rysunek 3: Mapa pomiędzy numeracją globalną funkcji związanych z wierzchołkami trójkątów a numeracją lokalną w poszczególnych trójkątach.


Następnie nad wzorcowym elemetem trójkątnym \( \hat{E}:(0,1)-(0,0)-(1,0) \) wprowadzamy trzy lokalne funkcje bazowe
\( \hat{\psi}^1(\xi,\eta)=(1-\xi)\eta \\ \hat{\psi}^2(\xi,\eta)=(1-\xi)(1-\eta) \\ \hat{\psi}^3(\xi,\eta)=\xi(1-\eta) \)

Funkcje te mapowane są na funkcje bazowe rozpięte na poszczególnych elementach. W tym celu definiujemy mapy odwzorowujące element wzorcowy na poszczególne elementy
\( \hat{E} \ni (\xi,\eta) \rightarrow x_{E1}(\xi,\eta)=(\xi-1,\eta)=(x,y)\in E_1 \\ \hat{E} \ni (\xi,\eta) \rightarrow x_{E2}(\xi,\eta)=(-\xi,-\eta+1)=(x,y)\in E_2 \\ \hat{E} \ni (\xi,\eta) \rightarrow x_{E3}(\xi,\eta)=(\xi,\eta)=(x,y)\ni E_3 \\ \hat{E} \in (\xi,\eta) \rightarrow x_{E4}(\xi,\eta)=(\xi+1,\eta+1)=(x,y)\in E_4 \\ \hat{E} \ni (\xi,\eta) \rightarrow x_{E5}(\xi,\eta)=(\xi,\eta-1)=(x,y)\in E_5 \\ \hat{E} \ni (\xi,\eta) \rightarrow x_{E6}(\xi,\eta)=(1-\xi,-\eta)=(x,y)\in E_6 \)

Następnie obliczamy odwzorowania odwrotne
\( E_1 \ni (x,y) \rightarrow x_{E1}^{-1}(x,y)=(x+1,y)=(\xi,\eta)\in \hat{E} \\ E_2 \ni (x,y) \rightarrow x_{E2}^{-1}(x,y)=(-x,-y+1)=(\xi,\eta)\in \hat{E} \\ E_3 \ni (x,y) \rightarrow x_{E3}^{-1}(x,y)=(x,y)=(\xi,\eta)\in \hat{E} \\ E_4 \ni (x,y) \rightarrow x_{E4}^{-1}(x,y)=(x-1,y-1)=(\xi,\eta) \in \hat{E} \\ E_5 \ni (x,y) \rightarrow x_{E5}^{-1}(x,y)=(x,y+1)=(\xi,\eta) \in \hat{E} \\ E_6 \ni (x,y) \rightarrow x_{E6}^{-1}(x,y)=(-x+1,-y)=(\xi,\eta)\in \hat{E} \)

Mając wzory na odwzorowania mapujące pomiędzy elementem wzorcowym a poszczególnymi elementami, możemy zdefiniować funkcje bazowe na elemencie pierwszym
\( \psi^1(x,y)=\hat{\psi}^1\left(x_{E1}^{-1}(x,y)\right)=\hat{\psi}^1\left(x+1,y \right)=(1-(x+1))y=-xy \\ \psi^2(x,y)=\hat{\psi}^2\left(x_{E1}^{-1}(x,y)\right)=\hat{\psi}^2\left(x+1,y \right)=(1-(x+1))(1-y)=x(y-1) \\ \\ \psi^3(x,y)=\hat{\psi}^3\left(x_{E1}^{-1}(x,y)\right)=\hat{\psi}^3\left(x+1,y \right)=(x+1)(1-y) \)
(zauważmy, że pierwsza lokalna funkcja przyjmuje wartość 1 w punkcie (-1,1), druga lokalna funkcja przyjmuje wartość 1 w punkcie (-1,0), oraz trzecia lokalna funkcja przyjmuje wartość 1 w punkcie (0,0)),

na elemencie drugim
\( \psi^1(x,y)=\hat{\psi}^1\left(x_{E2}^{-1}(x,y)\right)=\hat{\psi}^1\left(-x,-y+1 \right)=(1+x)(-y+1)=(1+x)(1-y) \\ \psi^2(x,y)=\hat{\psi}^2\left(x_{E2}^{-1}(x,y)\right)=\hat{\psi}^2\left(-x,-y+1 \right)=(1+x)(1-(-y+1))=(1+x)y \\ \\ \psi^3(x,y)=\hat{\psi}^3\left(x_{E2}^{-1}(x,y)\right)=\hat{\psi}^3\left(-x,-y+1 \right)=-x(1-(-y+1))=-xy \)
(zauważmy, że pierwsza lokalna funkcja przyjmuje wartość 1 w punkcie (0,0), druga lokalna funkcja przyjmuje wartość 1 w punkcie (0,1), oraz trzecia lokalna funkcja przyjmuje wartość 1 w punkcie (-1,1)),

na elemencie trzecim
\( \psi^1(x,y)=\hat{\psi}^1\left(x_{E3}^{-1}(x,y)\right)=\hat{\psi}^1\left(x,y \right)=(1-x)y \\ \psi^2(x,y)=\hat{\psi}^2\left(x_{E3}^{-1}(x,y)\right)=\hat{\psi}^2\left(x,y \right)=(1-x)(1-y) \\ \\ \psi^3(x,y)=\hat{\psi}^3\left(x_{E3}^{-1}(x,y)\right)=\hat{\psi}^3\left(x,y \right)=x(1-y) \)
(zauważmy, że pierwsza lokalna funkcja przyjmuje wartość 1 w punkcie (0,1), druga lokalna funkcja przyjmuje wartość 1 w punkcie (0,0), oraz trzecia lokalna funkcja przyjmuje wartość 1 w punkcie (1,0)),

na elemencie czwartym
\( \psi^1(x,y)=\hat{\psi}^1\left(x_{E4}^{-1}(x,y)\right)=\hat{\psi}^1\left(x-1,y-1 \right)=(1-(x-1))(y-1)=x(1-y) \\ \psi^2(x,y)=\hat{\psi}^2\left(x_{E4}^{-1}(x,y)\right)=\hat{\psi}^2\left(x-1,y-1 \right)=(1-(x-1))(1-(y-1))=xy \\ \\ \psi^3(x,y)=\hat{\psi}^3\left(x_{E4}^{-1}(x,y)\right)=\hat{\psi}^3\left(x-1,y-1 \right)=(x-1)(1-(y-1))=(1-x)y \)
(zauważmy, że pierwsza lokalna funkcja przyjmuje wartość 1 w punkcie (1,0), druga lokalna funkcja przyjmuje wartość 1 w punkcie (1,1), oraz trzecia lokalna funkcja przyjmuje wartość 1 w punkcie (0,1)),

na elemencie piątym
\( \psi^1(x,y)=\hat{\psi}^1\left(x_{E5}^{-1}(x,y)\right)=\hat{\psi}^1\left(x,y+1 \right)=(1-x)(y+1) \\ \psi^2(x,y)=\hat{\psi}^2\left(x_{E5}^{-1}(x,y)\right)=\hat{\psi}^2\left(x,y+1 \right)=(1-x)(1-(y+1))=(x-1)y \\ \\ \psi^3(x,y)=\hat{\psi}^3\left(x_{E5}^{-1}(x,y)\right)=\hat{\psi}^3\left(x,y+1)\right)=x(1-(y+1))=-xy \)
(zauważmy, że pierwsza lokalna funkcja przyjmuje wartość 1 w punkcie (0,0), druga lokalna funkcja przyjmuje wartość 1 w punkcie (0,-1), oraz trzecia lokalna funkcja przyjmuje wartość 1 w punkcie (1,-1)),

oraz na elemencie szóstym
\( \psi^1(x,y)=\hat{\psi}^1\left(x_{E6}^{-1}(x,y)\right)=\hat{\psi}^1\left(-x+1,-y \right)=(1-(-x+1))(-y)=-xy \\ \psi^2(x,y)=\hat{\psi}^2\left(x_{E6}^{-1}(x,y)\right)=\hat{\psi}^2\left(-x+1,-y \right)=(1-(-x+1))(1-(-y))=x(1-y) \\ \\ \psi^3(x,y)=\hat{\psi}^3\left(x_{E6}^{-1}(x,y)\right)=\hat{\psi}^3\left(-x+1,-y)\right)=(1-x)(1+y) \)
(zauważmy, że pierwsza lokalna funkcja przyjmuje wartość 1 w punkcie (1,-1), druga lokalna funkcja przyjmuje wartość 1 w punkcie (1,0), oraz trzecia lokalna funkcja przyjmuje wartość 1 w punkcie (0,0)).

Funkcje na lokalnych elementach agregowane są w globalne funkcje bazowe \( e^1,e^2,e^3,e^6,e^8 \) zgodnie z mapowaniem przedstawionym na Rys. 3.
Innymi słowy
\( e_1=\psi^3_{E1}+\psi^2_{E2} \\ e_2=\psi^2_{E2}+\psi^3_{E3}+\psi^2_{E4} \\ e_3=\psi^1_{E4}\\ e_6 =\psi^2_{E3}+\psi^3_{E4}+\psi^1_{E6} \\ e_8=\psi^2_{E5}+\psi^3_{E6} \)

Nasze rozwiązanie (rozkład temperatury) przybliżamy za pomocą kombinacji zagregowanych wielomianów Lagrange'a
\( u(x,y)=\sum_{i=1,...,8 } u_i e_i(x,y) \).
Ze względu na stosowanie zerowego warunku Dirichleta na brzegu "wewnętrznym" możemy od razu przyjąć, że współczynniki wielomianów Lagrange'a związane z brzegiem wewnętrznym są równe zero, czyli
\( u_4=u_5=u_7=0 \), dlatego więc nawet nie wyprowadzaliśmy wzorów na funkcje bazowe \( e_4(x,y),e_5(x,y),e_7(x,y) \), ponieważ są one zerowane przez zerowy warunek Dirichleta (wymuszany przez zerowanie współczynników).

Generowanie nieregularnej globalnej numeracji funkcji bazowych oraz nieregularnego mapowania lokalnych funkcji elementowych na funkcje globalne jest typową cechą stosowania metody elementów skończonych na siatkach nieregularnych na przykład z wykorzystaniem wielomianów Lagrange'a. W ogólnym przypadku, musimy również wygenerować globalną numerację i lokalne numerację wierzchołków elementów trójkątnych, oraz wygenerować wzory na funkcje bazowe na wszystkich elementach trójkątnych.

Algorytm metody elementów skończonych opisać można w sposób następujący


1 \( B(1:8,1:8)=0 \)(creation of the matrix)

2 \( L(1:8)=0 \)(creation of the right hand side)
3 Loop with respect to triangular elements \( E \in \{ E_1, E_2, E_3, E_4, E_6 \} \)
4 First loop with respect to local functions \( \psi^i_k \in \{\psi^1_k,\psi^2_k,\psi^3_k \} \) of element \( E_k \))
5 \( i1 = \) row of the matrix related with \( \psi^i_k \)
6 \( L(i1)+= l(\psi^i_k)|_{E_k} \)
7 Second loop with respect to local functions \( \psi^j_k \in \{\psi^1_k,\psi^2_k,\psi^3_k \} \) of element \( E_k \))
8 \( j1 = \) column of the matrix related with \( \psi^j_k \)
9 \( B(i1,j1)+= a(\psi^i_k,\psi^j_k)|_{E_k} \)
10 \( B(4,1:8)=0 \) (enforcing Dirichlet b.c. at node 4)
11 \( B(5,1:8)=0 \) (enforcing Dirichlet b.c. at node 5)
12 \( B(7,1:8)=0 \) (enforcing Dirichlet b.c. at node 7)
13 \( L( 4)=0 \) (enforcing Dirichlet b.c. at node 4)
14 \( L(5)=0 \) (enforcing Dirichlet b.c. at node 5)
15 \( L(7)=0 \) (enforcing Dirichlet b.c. at node 7)
16 \( B(4,4)=1 \) (1 on diagonal at row 4)
17 \( B(5,5)=1 \) (1 on diagonal at row 5)

18 \( B(7,7)=1 \) (1 on diagonal at row 7)

Zauważmy, że w algorytmie obliczamy całki po poszczególnych elementach z funkcjonału lewej i prawej strony. Innymi słowy w linii 6 liczymy
\( L(i1)+= l(\psi^i_k)|_{E_k}=\int_{ \partial \Omega_N \cap E_k } g(x,y) v(x,y) dS \)
czyli całki po elemencie \( E_k \) z funkcji \( g(x,y) v(x,y) \) określonej na brzegu elementu \( E_k \) przecinającego brzeg Neumanna. Musimy więc sprawdzić 3 krawędzie elementu \( E_k \) oraz sprawdzić czy któraś z tych krawędzi nie leży na brzegu Neumanna, czyli czy \( \partial E_k \cap \Gamma_N \neq \emptyset \) gdzie \( \Gamma_N = \{(x,y):x=-1 \cup x=1 \cup y=1 \cup y=-1 \} \). Jeśli fragment brzegu elementu leży na brzegu Neumanna, należy policzyć całkę używając jednowymiarowej kwadratury Gaussa na tym brzegu, tak jak opisano to w module "Sformułowanie wariacyjne a całkowanie numeryczne".
Ponadto w linii 9 musimy policzyć całkę po elemencie z formy lewej strony \( B(i1,j1)+= a(\psi^i_k,\psi^j_k)|_{E_k} = \\ \int_{E_k} \left(\frac{\partial u }{\partial x }\frac{\partial v }{\partial x } + \frac{\partial u }{\partial y } \frac{ \partial v}{\partial y } \right)v(x,y) dxdy \)
Całkę tą należy policzyć, używając dwuwymiarowych kwadratur Gaussa na elemencie trójkątnym \( E_k \).
Po wygenerowaniu układu równań i zastosowaniu solwera dokładnego dostajemy rozwiązanie przedstawione na Rys. 4.

Obliczony rozkład temperatury na obszarze w kształcie litery L dla zadanej funkcji prędkości zmian temperatury na brzegu g(x,y).
Rysunek 4: Obliczony rozkład temperatury na obszarze w kształcie litery L dla zadanej funkcji prędkości zmian temperatury na brzegu g(x,y).


Ostatnio zmieniona Piątek 25 z Marzec, 2022 10:47:19 UTC Autor: Maciej Paszynski
Zaloguj się/Zarejestruj w OPEN AGH e-podręczniki
Czy masz już hasło?

Hasło powinno mieć przynajmniej 8 znaków, litery i cyfry oraz co najmniej jeden znak specjalny.

Przypominanie hasła

Wprowadź swój adres e-mail, abyśmy mogli przesłać Ci informację o nowym haśle.
Dziękujemy za rejestrację!
Na wskazany w rejestracji adres został wysłany e-mail z linkiem aktywacyjnym.
Wprowadzone hasło/login są błędne.